package com.huan.social.baidu.connect;

import lombok.extern.slf4j.Slf4j;
import org.springframework.social.oauth2.OAuth2Parameters;
import org.springframework.social.oauth2.OAuth2Template;

/**
 * 走完oauth2流程
 *
 * @author huan.fu
 * @date 2018/9/27 - 17:14
 */
@Slf4j
public class BaiduOauth2Template extends OAuth2Template {

	public BaiduOauth2Template(String clientId, String clientSecret, String authorizeUrl, String accessTokenUrl) {
		super(clientId, clientSecret, authorizeUrl, accessTokenUrl);
		// 设置为true，将客户端凭证作为参数传递给提供者，而不是使用HTTP基本身份验证 createRestTemplate() 此方法中如果useParametersForClientAuthentication=false将会使用basic认证
		setUseParametersForClientAuthentication(true);
	}

	@Override
	public String buildAuthenticateUrl(OAuth2Parameters parameters) {
		StringBuilder builder = new StringBuilder(super.buildAuthenticateUrl(parameters));
		// force_login=1 在百度登录中表示：force_login：非必须参数，如传递“force_login=1”，则加载登录页时强制用户输入用户名和口令，不会从cookie中读取百度用户的登陆状态。
		builder.append("&force_login=1");
		log.info("获取code的访问url:[{}]", builder.toString());
		return builder.toString();
	}
}
